L'argomento dell'innalzamento del livello dei mari è da tempo affrontato dall'opinione pubblica, parzialmente a causa del sempre maggiore interessamento verso le tematiche legate al riscaldamento globale, ma in particolare anche per i potenziali effetti che questo fenomeno potrebbe avere sulle aree costiere. Le cause che più spesso vengono attribuite all'innalzamento della superficie degli oceani sono lo scoglimento dei ghiacciai e l'espansione dell'acqua dovuta all'aumento della sua temperatura.
Andremo quindi a esplorare tre diversi modelli: uno sul livello della superficie del mare, uno sulla temperatura dell'acqua e un'ultimo sull'area coperta dai ghiacciai. Lo scopo finale sarà quello di valutare la correlazione e, possibilmente, la causazione delle ultime due variabili sulla prima.
# Import libraries
import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sns
import cartopy.crs as ccrs
import xarray as xr
import nc_time_axis
import numpy as np
import pandas as pd
La temperatura conservativa è una proprietà termodinamica dell'acqua di mare. È derivata dall'entalpia potenziale ed è raccomandata secondo lo standard TEOS-10 in sostituzione della temperatura potenziale poiché rappresenta in modo più accurato il contenuto di calore nell'oceano.
Per questa variabile utilizziamo il modello "CMIP6.CMIP.CNRM-CERFACS.CNRM-CM6-1.historical" disponibile qui.
Il modello è stato costruito a seguito del progetto: "Voldoire, Aurore (2018). CMIP6 simulations of the CNRM-CERFACS based on CNRM-CM6-1 model for CMIP experiment historical".
# Apro ed esploro il modello 1
modfile1 = 'C:/Users/david/Desktop/GeoData/Project/bigthetaoga_Omon_CNRM-CM6-1_historical_r17i1p1f2_gn_185001-201412.nc'
d1 = xr.open_dataset(modfile1)
d1
<xarray.Dataset> Dimensions: (time: 1980, axis_nbounds: 2) Coordinates: sector |S255 b'global' * time (time) datetime64[ns] 1850-01-16T12:00:00 ... 2014-12-16T12:... Dimensions without coordinates: axis_nbounds Data variables: time_bounds (time, axis_nbounds) datetime64[ns] 1850-01-01 ... 2015-01-01 bigthetaoga (time) float32 3.954 3.957 3.958 3.958 ... 4.039 4.041 4.044 Attributes: (12/51) Conventions: CF-1.7 CMIP-6.2 creation_date: 2019-07-15T09:30:04Z description: CMIP6 historical title: CNRM-CM6-1 model output prepared for CMIP6 / CMIP... activity_id: CMIP contact: [email protected] ... ... xios_commit: 1442-shuffle nemo_gelato_commit: 49095b3accd5d4c_6524fe19b00467a arpege_minor_version: 6.3.2 parent_variant_label: r1i1p1f2 history: none tracking_id: hdl:21.14100/84a180f0-104e-4149-aa29-1c2bc876b254
array(b'global', dtype='|S255')
array(['1850-01-16T12:00:00.000000000', '1850-02-15T00:00:00.000000000', '1850-03-16T12:00:00.000000000', ..., '2014-10-16T12:00:00.000000000', '2014-11-16T00:00:00.000000000', '2014-12-16T12:00:00.000000000'], dtype='datetime64[ns]')
array([['1850-01-01T00:00:00.000000000', '1850-02-01T00:00:00.000000000'], ['1850-02-01T00:00:00.000000000', '1850-03-01T00:00:00.000000000'], ['1850-03-01T00:00:00.000000000', '1850-04-01T00:00:00.000000000'], ..., ['2014-10-01T00:00:00.000000000', '2014-11-01T00:00:00.000000000'], ['2014-11-01T00:00:00.000000000', '2014-12-01T00:00:00.000000000'], ['2014-12-01T00:00:00.000000000', '2015-01-01T00:00:00.000000000']], dtype='datetime64[ns]')
array([3.954227, 3.956635, 3.958156, ..., 4.038894, 4.041449, 4.043603], dtype=float32)
Per poter decomporre la serie storica mensile nelle sue tre componenti (trend, stagionalità e residui) dobbiamo apportare delle modifiche alla struttura dei dati in modo che possano essere passati alla funzione "seasonal_decompose" della libreria "statsmodels".
# Trasformiamo i dati in dataframe
ts_bigthetaoga = d1.drop_vars('time_bounds').to_dataframe()['bigthetaoga'].to_frame()
# Aggiungiamo un indice temporale identico alla variabile "time" già presente nel modello, ma che possa essere interpretato
# dalla funzione di decomposizione
ts_bigthetaoga['month'] = pd.to_datetime(pd.date_range('1850-01', '2015-01', freq='M'))
ts_bigthetaoga = ts_bigthetaoga.set_index('month')
La funzione seasonal_decompose ci permette di decidere tra i due tipi di decomposizione (additivo e multiplicativo) tramite l'opzione "model". La scelta del modello è determinata dall'analisi dei residui: cerchiamo il modello che risulti in residui con range minore, varianza costante, e che non presentino pattern.
from statsmodels.tsa.seasonal import seasonal_decompose
from dateutil.parser import parse
# Additive Decomposition
bigthetaoga_decom = seasonal_decompose(ts_bigthetaoga.bigthetaoga, model='additive', extrapolate_trend='freq')
# Plot
plt.rcParams.update({'figure.figsize': (10, 10)})
bigthetaoga_decom.plot()
plt.show()
Ci concentriamo ora sulla stagionalità annuale:
plt.rcParams.update({'figure.figsize': (9, 5)})
bigthetaoga_decom.seasonal.groupby(bigthetaoga_decom.seasonal.index.month).mean().plot()
plt.title("Seasonal Component of Global Average Sea Water Conservative Temperature")
plt.show()
La temperatura conservativa media globale del mare presenta una ben determinata componente stagionale. Questa presenta un picco in corrispondenza del mese di Aprile e un minimo in corrispondenza di quello di Settembre.
La variazione però è relativamente contenuta: 0.012 gradi attorno al trend.
Andiamo ora a isolare il trend, rimuovendo quindi la componente stagionale, calcolando una media annuale della temperatura.
d1= d1.resample(time="Y").mean()
plt.rcParams.update({'figure.figsize': (9, 5)})
d1.bigthetaoga.plot()
plt.title("Global Average Sea Water Conservative Temperature")
plt.show()
Il grafico risultante ci dimostra un trend decisamente crescente, che è cresciuto, dal 1850 al 2014 di 0.09 gradi. Il grafico sembra anche mostrare un'accellerazione di questo trend dagli anni 1960.
Per valutare l'innalzamento del livello dei mari utilizziamo la variabile "zos": "Sea Surface Height Above Geoid". Come dice il nome, la variabile calcola la distanza verticale della superficie oceaninca da una superficie di riferimento, che in questo caso è il geoide. Il geoide è una superficie di geopotenziale costante, con la quale il livello del mare dovrebbe coincirdere se gli oceani fossero a "riposo". Fonte: NVS.
Per questa variabile utilizziamo il modello "zos_Omon_BCC-CSM2-MR_esm-hist" disponibile qui.
Il modello è stato costruito a seguito del progetto: "Wu, Tongwen; Chu, Min; et al. (2018). BCC BCC-CSM2MR model output prepared for CMIP6 CMIP esm-hist.".
# Apro ed esploro il modello 2
modfile2 = 'C:/Users/david/Desktop/GeoData/Project/zos_Omon_BCC-CSM2-MR_esm-hist_r1i1p1f1_gn_185001-201412.nc'
d2 = xr.open_dataset(modfile2)
d2
<xarray.Dataset> Dimensions: (time: 1980, bnds: 2, lat: 232, lon: 360) Coordinates: * time (time) object 1850-01-16 12:00:00 ... 2014-12-16 12:00:00 * lat (lat) float64 -81.5 -80.5 -79.5 -78.5 ... 86.5 87.5 88.5 89.5 * lon (lon) float64 0.5 1.5 2.5 3.5 4.5 ... 356.5 357.5 358.5 359.5 latitude (lat, lon) float32 -81.5 -81.5 -81.5 -81.5 ... 88.26 88.05 87.83 longitude (lat, lon) float32 0.5 1.5 2.5 3.5 ... 60.95 63.36 65.25 66.77 Dimensions without coordinates: bnds Data variables: time_bnds (time, bnds) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00 lat_bnds (lat, bnds) float64 -81.5 -81.0 -81.0 -80.0 ... 89.0 89.0 89.5 lon_bnds (lon, bnds) float64 0.0 1.0 1.0 2.0 ... 358.0 359.0 359.0 360.0 zos (time, lat, lon) float32 ... Attributes: (12/49) Conventions: CF-1.7 CMIP-6.2 activity_id: CMIP branch_method: Standard branch_time_in_child: 0.0 branch_time_in_parent: 2145.0 comment: The model integration starts from the esm-piContr... ... ... title: BCC-CSM2-MR output prepared for CMIP6 tracking_id: hdl:21.14100/d97c7956-1712-409f-a7ca-58d4b42c929b variable_id: zos variant_label: r1i1p1f1 license: CMIP6 model data produced by BCC is licensed unde... cmor_version: 3.3.2
array([cftime.DatetimeNoLeap(1850, 1, 16, 12, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(1850, 2, 15, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(1850, 3, 16, 12, 0, 0, 0, has_year_zero=True), ..., cftime.DatetimeNoLeap(2014, 10, 16, 12, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(2014, 11, 16, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(2014, 12, 16, 12, 0, 0, 0, has_year_zero=True)], dtype=object)
array([-81.5, -80.5, -79.5, ..., 87.5, 88.5, 89.5])
array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5])
array([[-81.5 , -81.5 , -81.5 , ..., -81.5 , -81.5 , -81.5 ], [-80.5 , -80.5 , -80.5 , ..., -80.5 , -80.5 , -80.5 ], [-79.5 , -79.5 , -79.5 , ..., -79.5 , -79.5 , -79.5 ], ..., [ 86.58047 , 86.42422 , 86.26085 , ..., 86.996666, 86.867805, 86.72868 ], [ 87.225815, 87.03524 , 86.840004, ..., 87.75915 , 87.589096, 87.41082 ], [ 87.61307 , 87.39397 , 87.17378 , ..., 88.2616 , 88.04723 , 87.83092 ]], dtype=float32)
array([[ 0.5 , 1.5 , 2.5 , ..., -2.5 , -1.5 , -0.5 ], [ 0.5 , 1.5 , 2.5 , ..., -2.5 , -1.5 , -0.5 ], [ 0.5 , 1.5 , 2.5 , ..., -2.5 , -1.5 , -0.5 ], ..., [33.550873, 36.22115 , 38.67141 , ..., 24.030403, 27.47284 , 30.640976], [47.585346, 49.95292 , 52.038475, ..., 38.205967, 41.781086, 44.88261 ], [68.01373 , 69.05388 , 69.93538 , ..., 63.359528, 65.24949 , 66.76796 ]], dtype=float32)
array([[cftime.DatetimeNoLeap(1850, 1, 1, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(1850, 2, 1, 0, 0, 0, 0, has_year_zero=True)], [cftime.DatetimeNoLeap(1850, 2, 1, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(1850, 3, 1, 0, 0, 0, 0, has_year_zero=True)], [cftime.DatetimeNoLeap(1850, 3, 1, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(1850, 4, 1, 0, 0, 0, 0, has_year_zero=True)], ..., [cftime.DatetimeNoLeap(2014, 10, 1, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(2014, 11, 1, 0, 0, 0, 0, has_year_zero=True)], [cftime.DatetimeNoLeap(2014, 11, 1, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(2014, 12, 1, 0, 0, 0, 0, has_year_zero=True)], [cftime.DatetimeNoLeap(2014, 12, 1, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(2015, 1, 1, 0, 0, 0, 0, has_year_zero=True)]], dtype=object)
array([[-81.5, -81. ], [-81. , -80. ], [-80. , -79. ], ..., [ 87. , 88. ], [ 88. , 89. ], [ 89. , 89.5]])
array([[ 0., 1.], [ 1., 2.], [ 2., 3.], ..., [357., 358.], [358., 359.], [359., 360.]])
[165369600 values with dtype=float32]
Ci concentriamo prima su un'analisi geografica. Andiamo a plottare l'altezza media del mare sopra al geoide.
# Situazione media
plt.rcParams.update({'figure.figsize': (8, 5)})
p0 = d2.zos.mean(dim='time').plot(transform=ccrs.PlateCarree(),
subplot_kws={'projection': ccrs.Robinson()})
plt.title("Average Sea Surface Height Above Geoid through time")
p0.axes.coastlines()
plt.show()
Dal grafico risultante notiamo come l'area in cui l'altezza media del mare tende ad essere superiore a quella del geoide si addensa intorno all'equatore, mentre ai poli l'altezza media del mare tende ad essere inferiore.
Andiamo ora a verificare se sono avvenuti cambiamenti durante gli anni: costruiamo una mappa che mostri le differenze tra i primi 20 anni di osservazioni (1950-1979) agli ultimi anni (1995-2005). Le aree in rosso andranno a indicare i punti in cui il livello del mare è aumentato maggiormente, al contrario quelle in blu corrisponderanno con i punti in cui il livello del mare è diminuito.
# Analisi delle differenze tra i primi 20 anni e gli ultimi 20 anni
plt.rcParams.update({'figure.figsize': (8, 5)})
Anom = d2.sel(time=slice('1995-01-01', '2015-01-01')).mean(dim='time') - d2.sel(time=slice('1850-01-01', '1870-01-01')).mean(dim='time')
p0 = Anom.zos.plot(transform=ccrs.PlateCarree(), subplot_kws={'projection': ccrs.Robinson()})
plt.title("Anomalies of Sea Surface Height Above Geoid \n between first and last 20 years")
p0.axes.coastlines()
plt.show()
Il grafico risultante è quasi per la totalità di colore rosso, dimostrando un aumento generale del livello dei mari.
L'unica area che ha dimostrato un abbassamento dei livelli del mare è quella nelle prossimità dell'Antartide. Al contrario, a latitudini appena superiori a questa fascia di colore blu, risiede la zona corrispondente al maggiore innalzamento dei livelli dei mari (constrassegnata dal rosso più intenso).
Dall'analisi grafica notiamo anche che il modello sembra presentare degli artefatti, soprattutto in relazione del Polo Nord. Le coordinate descritte nel modello non sembrano combaciare bene con quelle delle funzioni di plot. Vari tentantativi per risolvere il problema sono stati fatti, ma senza successo.
Considerando il nostro interesse verte su una serie storica della media globale della variabile stessa, e non su una meticolosa analisi geografica, abbiamo deciso di utilizzare comunque il modello.
Il problema si ripeterà con il modello successivo.
# Usiamo uno "slice" delle latitudini per permetterci di concentrarsi sul polo Nord
p1a = d2.zos.isel(time=0,lat=slice(210,233)).plot(transform=ccrs.PlateCarree(),
subplot_kws={'projection': ccrs.Orthographic(central_longitude=0.0, central_latitude=90)},
cmap='Blues')
p1a.axes.coastlines()
<cartopy.mpl.feature_artist.FeatureArtist at 0x1aa3e0032b0>
Per costruire la serie storica dobbiamo calcolare la media globale dell'altezza del livello del mare sopra al geoide. Per fare ciò dobbiamo ovviamente calcolare la media attraverso ogni cella. Dobbiamo però prima definire dei pesi in modo da rendere conto della diminuzione dell'area delle celle all'avvicinarsi verso i poli. In questo modo potremo calcolare una media pesata e raggiungere una serie storica più veritiera.
fig = plt.figure(figsize=(9,5))
d2.zos.mean(axis=1).mean(axis=1).plot()
plt.title("Sea Surface Height Above Geoid prima del bilanciamento")
plt.ylabel("Sea Surface Height Above Geoid [m]")
plt.show()
# Costruzione di variabili utile rappresentanti le dimensioni dei dati
nmonths = len(d2.time)
nlat = len(d2.coords['lat'].values)
nlon = len(d2.coords['lon'].values)
# Definizione dei pesi in modo da tener conto della diminuzione dell'area coperta dalle celle all'avvicinarsi dei poli
weights = np.tile(np.cos(np.deg2rad(nlat)), (nlat,360))
# Costruzione di un array che possa contenere i dati mensili del modello
data_glob = np.empty([1, nmonths],dtype=float)
data_glob[:,:] = np.nan
# Costruzione di una maschera per rimuovere i valori nan (dati dalle celle corrispondenti a terre ferme)
masked_data = np.ma.masked_array(d2.isel(time=0).zos, np.isnan(d2.isel(time=0).zos))
# Loop sui mesi e calcolo della media pesata per il modello 2
for t in range(0,int(nmonths)):
masked_data = np.ma.masked_array(d2.isel(time=t).zos, np.isnan(d2.isel(time=0).zos))
data_glob[0,t] = np.ma.average(masked_data,weights=weights)
# Costruzione della visualizzazione per il modello 2
fig = plt.figure(figsize=(9,5))
plt.plot(pd.date_range('1850-01', '2015-01', freq='M'),data_glob[0])
plt.title("Sea Surface Height Above Geoid dopo del bilanciamento")
plt.ylabel("Sea Surface Height Above Geoid [m]")
plt.show()
# Costruzione di un dataset idoneo all'utilizzo della funzione "seasonal_decompose"
ts_zos = pd.DataFrame(data_glob[0], columns=["zos"])
ts_zos['month'] = pd.to_datetime(pd.date_range('1850-01', '2015-01', freq='M'))
ts_zos = ts_zos.set_index('month')
# Additive Decomposition
zos_decom = seasonal_decompose(ts_zos, model='additive', extrapolate_trend='freq')
# Plot
plt.rcParams.update({'figure.figsize': (10, 10)})
zos_decom.plot()
plt.show()
Ci concentriamo ancora una volta sulla componente stagionale mensile.
plt.rcParams.update({'figure.figsize': (9, 5)})
zos_decom.seasonal.groupby(zos_decom.seasonal.index.month).mean().plot()
plt.title("Seasonal Component of Global Average Sea Surface Height Above Geoid")
plt.ylabel("Sea Surface Height Above Geoid [m]")
plt.show()
La serie stagionale dell'altezza del livello dei mari presenta un andamento quasi completamente opposto di quella della temperatura conservativa. Essa infatti presenta un picco di 0.0015 nel mese di Settembre ed un minimo di -0.0022 ad Aprile.
zos_year = [sum(data_glob[0][i:i+12])/12 for i in range(0,len(data_glob[0]),12)]
ts_zos = pd.DataFrame(zos_year, columns=["zos"])
ts_zos['year'] = pd.to_datetime(pd.date_range('1850-01', '2015-01', freq='Y'))
ts_zos = ts_zos.set_index('year')
plt.rcParams.update({'figure.figsize': (9, 5)})
ts_zos.plot(legend=False)
plt.title("Global Average Sea Surface Height Above Geoid")
plt.ylabel("Sea Surface Height Above Geoid [m]")
plt.show()
Dal precedente grafico, ottenuto applicando al modello una media annuale della variabile di riferimento, un trend positivo lineare che ha portato il livello del mare al di sopra del geoide da un minimo di 2.22 cm nel 1850 ad un massimo di 9.74 cm nel 2015.
Per quanto riguarda lo scoglimento dei ghiacchiai, utilizziamo la variabile "simass", cioè la "massa totale di ghiaccio marino diviso per l'area della cella". Considerando che utilizzeremo, come proxy dello scoglimento del ghiaccio, la massa di ghiaccio totale, ci aspettiamo di avere correlazioni opposte a quanto sarebbe stato intuibile utiizzando una variabile che misurasse lo scoglimento. Ci aspettiamo insomma una correlazione negativa di questa variabile con le altre, considerando con una diminuzione dell'area del ghiaccio corrisponde a un maggiore scoglimento dello stesso.
Da notare anche che la variabile è già divisa per l'area della cella, per cui non consideriamo necessaria un'operazione di pesaggio nel momento del calcolo della media globale, come invece era stato per il modello 2.
Per questa variabile utilizziamo il modello "BCC-CSM2-MR_esm-hist" disponibile qui allo stello link del precedente.
Il modello è stato costruito a seguito dello stesso progetto del modello 2: "Wu, Tongwen; Chu, Min; et al. (2018). BCC BCC-CSM2MR model output prepared for CMIP6 CMIP esm-hist.".
# Apro il modello 3
modfile3 = 'C:/Users/david/Desktop/GeoData/Project/simass_SImon_BCC-CSM2-MR_esm-hist_r1i1p1f1_gn_185001-201412.nc'
d3 = xr.open_dataset(modfile3)
d3
<xarray.Dataset> Dimensions: (time: 1980, bnds: 2, lat: 232, lon: 360) Coordinates: * time (time) object 1850-01-16 12:00:00 ... 2014-12-16 12:00:00 * lat (lat) float64 -81.5 -80.5 -79.5 -78.5 ... 86.5 87.5 88.5 89.5 * lon (lon) float64 0.5 1.5 2.5 3.5 4.5 ... 356.5 357.5 358.5 359.5 latitude (lat, lon) float32 -81.5 -81.5 -81.5 -81.5 ... 88.26 88.05 87.83 longitude (lat, lon) float32 0.5 1.5 2.5 3.5 ... 60.95 63.36 65.25 66.77 Dimensions without coordinates: bnds Data variables: time_bnds (time, bnds) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00 lat_bnds (lat, bnds) float64 -81.5 -81.0 -81.0 -80.0 ... 89.0 89.0 89.5 lon_bnds (lon, bnds) float64 0.0 1.0 1.0 2.0 ... 358.0 359.0 359.0 360.0 simass (time, lat, lon) float32 ... Attributes: (12/49) Conventions: CF-1.7 CMIP-6.2 activity_id: CMIP branch_method: Standard branch_time_in_child: 0.0 branch_time_in_parent: 2145.0 comment: The model integration starts from the esm-piContr... ... ... title: BCC-CSM2-MR output prepared for CMIP6 tracking_id: hdl:21.14100/04f7ca22-6892-418e-8dae-e386dea2dbc3 variable_id: simass variant_label: r1i1p1f1 license: CMIP6 model data produced by BCC is licensed unde... cmor_version: 3.3.2
array([cftime.DatetimeNoLeap(1850, 1, 16, 12, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(1850, 2, 15, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(1850, 3, 16, 12, 0, 0, 0, has_year_zero=True), ..., cftime.DatetimeNoLeap(2014, 10, 16, 12, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(2014, 11, 16, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(2014, 12, 16, 12, 0, 0, 0, has_year_zero=True)], dtype=object)
array([-81.5, -80.5, -79.5, ..., 87.5, 88.5, 89.5])
array([ 0.5, 1.5, 2.5, ..., 357.5, 358.5, 359.5])
array([[-81.5 , -81.5 , -81.5 , ..., -81.5 , -81.5 , -81.5 ], [-80.5 , -80.5 , -80.5 , ..., -80.5 , -80.5 , -80.5 ], [-79.5 , -79.5 , -79.5 , ..., -79.5 , -79.5 , -79.5 ], ..., [ 86.58047 , 86.42422 , 86.26085 , ..., 86.996666, 86.867805, 86.72868 ], [ 87.225815, 87.03524 , 86.840004, ..., 87.75915 , 87.589096, 87.41082 ], [ 87.61307 , 87.39397 , 87.17378 , ..., 88.2616 , 88.04723 , 87.83092 ]], dtype=float32)
array([[ 0.5 , 1.5 , 2.5 , ..., -2.5 , -1.5 , -0.5 ], [ 0.5 , 1.5 , 2.5 , ..., -2.5 , -1.5 , -0.5 ], [ 0.5 , 1.5 , 2.5 , ..., -2.5 , -1.5 , -0.5 ], ..., [33.550873, 36.22115 , 38.67141 , ..., 24.030403, 27.47284 , 30.640976], [47.585346, 49.95292 , 52.038475, ..., 38.205967, 41.781086, 44.88261 ], [68.01373 , 69.05388 , 69.93538 , ..., 63.359528, 65.24949 , 66.76796 ]], dtype=float32)
array([[cftime.DatetimeNoLeap(1850, 1, 1, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(1850, 2, 1, 0, 0, 0, 0, has_year_zero=True)], [cftime.DatetimeNoLeap(1850, 2, 1, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(1850, 3, 1, 0, 0, 0, 0, has_year_zero=True)], [cftime.DatetimeNoLeap(1850, 3, 1, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(1850, 4, 1, 0, 0, 0, 0, has_year_zero=True)], ..., [cftime.DatetimeNoLeap(2014, 10, 1, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(2014, 11, 1, 0, 0, 0, 0, has_year_zero=True)], [cftime.DatetimeNoLeap(2014, 11, 1, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(2014, 12, 1, 0, 0, 0, 0, has_year_zero=True)], [cftime.DatetimeNoLeap(2014, 12, 1, 0, 0, 0, 0, has_year_zero=True), cftime.DatetimeNoLeap(2015, 1, 1, 0, 0, 0, 0, has_year_zero=True)]], dtype=object)
array([[-81.5, -81. ], [-81. , -80. ], [-80. , -79. ], ..., [ 87. , 88. ], [ 88. , 89. ], [ 89. , 89.5]])
array([[ 0., 1.], [ 1., 2.], [ 2., 3.], ..., [357., 358.], [358., 359.], [359., 360.]])
[165369600 values with dtype=float32]
Per prima cosa effettuiamo un'analisi geografica della distribuzione della massa di ghiaccio. Senza alcuna sorpresa, notiamo che la maggior parte di essa è concentrata nel polo Nord, mentre un'altra parte si addensa intorno al contidente dell'Antartide.
Una cosa importante da fare per questa analisi geografica è porre un limite massimo allo span dei colori utilizzando l'opzione "vmax" della funzione "plot". Questo perché la distribuzione della massa di ghiaccio è fortemente assimmetrica: pochissime celle raggiungono valori molto alti. Se non usassimo questa opzione, lo span della legenda coprirebbe l'intero range dei valori, e così quasi tutto il grafico risulterebbe bianco.
plt.rcParams.update({'figure.figsize': (8, 5)})
p0 = d3.simass.mean(dim='time').plot(transform=ccrs.PlateCarree(),
subplot_kws={'projection': ccrs.Robinson()},
cmap='Blues', vmax=1000)
plt.title("Average Total Mass of Sea Ice through time")
p0.axes.coastlines()
plt.show()
Come seconda cosa, invece, calcoliamo le anomalie tra i primi 20 anni e gli ultimi 20 anni di osservazioni, per poter analizzare i cambiamenti della distribuzione delle masse di ghiaccio. Il grafico sottostante, perciò, mostrerà in rosso le celle in cui l'area del ghiaccio è diminuita, e in blu le celle in cui essa è aumentata.
# Analisi delle differenze tra i primi 20 anni e gli ultimi 20 anni
plt.rcParams.update({'figure.figsize': (8, 5)})
Anom = d3.sel(time=slice('1995-01-01', '2015-01-01')).mean(dim='time') - d3.sel(time=slice('1850-01-01', '1870-01-01')).mean(dim='time')
p0 = Anom.simass.plot(transform=ccrs.PlateCarree(), subplot_kws={'projection': ccrs.Robinson()}, vmax=200, cmap = 'RdBu')
plt.title("Anomalies of Total Mass of Sea Ice \n between first and last 20 years")
p0.axes.coastlines()
plt.show()
Come ci aspettavamo, il grafico prende una colorazione quasi del tutto rossa, a indicazione di una generale diminuzione delle aree coperte dai ghiacciai globalmente. Ovviamente, le aree rosse si addensano ai due poli, in quanto, come abbiamo visto prima, sono le zone con più presenza di ghiacciai, e che hanno quindi subito una diminuzione maggiore.
Concentrandosi sull'area Antartica è interessante vedere come la differenza tra la quantità di ghiaccio presente nel mare sia notabile semplicemente plottando le due situazioni una a fianco all'altra, anche senza costruire un grafico che disegni le differenze tra i due periodi. I due grafici rappresentano la situazioni media dei primi e degli ultimi 10 anni.
È evidente una generale diminuzione dell'area dei ghiacciai nella regione attorno al continente antartico nell'ultimo periodo.
d3_sliced1 = d3.simass.isel(lat=slice(0,30)).sel(time=slice('1850-01-01', '1860-01-01')).mean(dim='time')
d3_sliced2 = d3.simass.isel(lat=slice(0,30)).sel(time=slice('2005-01-01', '2015-01-01')).mean(dim='time')
p1a = d3_sliced1.plot(transform=ccrs.PlateCarree(),
subplot_kws={'projection': ccrs.Orthographic(central_longitude=0.0, central_latitude=-90)},
cmap='Blues', vmax=500)
p1a.axes.coastlines()
<cartopy.mpl.feature_artist.FeatureArtist at 0x1aa3ebe83d0>
p2a = d3_sliced2.plot(transform=ccrs.PlateCarree(),
subplot_kws={'projection': ccrs.Orthographic(central_longitude=0.0, central_latitude=-90)},
cmap='Blues', vmax=500)
p2a.axes.coastlines()
<cartopy.mpl.feature_artist.FeatureArtist at 0x1aa3ea70580>
ts_simass = d3.simass.mean(axis=1).mean(axis=1).to_dataframe()
ts_simass['month'] = pd.to_datetime(pd.date_range('1850-01', '2015-01', freq='M'))
ts_simass = ts_simass.set_index('month')
# Multiplicative Decomposition
simass_decom = seasonal_decompose(ts_simass.simass, model='multiplicative', extrapolate_trend='freq')
# Plot
plt.rcParams.update({'figure.figsize': (10, 10)})
simass_decom.plot()
plt.show()
plt.rcParams.update({'figure.figsize': (9, 5)})
simass_decom.seasonal.groupby(simass_decom.seasonal.index.month).mean().plot()
plt.title("Seasonal Component of Sea-Ice mass per Area")
plt.show()
La serie stagionale della massa di ghiaccio presenta invece un andamento del tutto simile a quella della temperatura conservativa. Essa infatti presenta un picco di 1.364 kg/m2 nel mese di Maggio ed un minimo di 0.658 kg/m2 a Settembre.
d3= d3.resample(time="Y").mean()
plt.rcParams.update({'figure.figsize': (9, 5)})
d3.simass.mean(axis=1).mean(axis=1).plot()
plt.title("Global Average Sea Ice Area")
plt.show()
Fra le tre variabili presentate, la massa di ghiaccio è quella che presenta un trend meno netto se si considera l'intero span temporale. Quello che è molto visibile, però, è un trend decrescende partito dagli anni 1970 e ancora presente negli ultimi anni di osservazioni.
# Costruzione di un dataset che contenga tutte le variabili
ts_zos['bigthetaoga'] = d1.bigthetaoga.to_dataframe()['bigthetaoga']
ts_zos['simass'] = d3.simass.mean(axis=1).mean(axis=1)
ts_zos.head()
zos | bigthetaoga | simass | |
---|---|---|---|
year | |||
1850-12-31 | 0.025079 | 3.952904 | 105.652702 |
1851-12-31 | 0.027067 | 3.954405 | 105.571953 |
1852-12-31 | 0.028324 | 3.955504 | 105.392555 |
1853-12-31 | 0.028730 | 3.955512 | 106.455231 |
1854-12-31 | 0.027566 | 3.956528 | 109.545181 |
# Costruzione di un dataset standardizzato per il plot
from sklearn.preprocessing import StandardScaler
ts_zosStd = pd.DataFrame(StandardScaler().fit_transform(ts_zos), columns=ts_zos.columns)
ts_zosStd = ts_zosStd.set_index(ts_zos.index)
plt.rcParams.update({'figure.figsize': (9, 5)})
ts_zosStd.plot()
plt.title("Confronto tra le serie storiche standardizzate delle tre variabili")
plt.show()
Standardizzando le tre variabili rendiamo possibile un confronto tramite una rappresentazione su grafico.
Le variabili "zos" (livello del mare rispetto al geoide) e "bigthetaoga" (temperatura conservativa del mare) sono visibilmente molto simili. Entrambe infatti seguono un trend positivo molto simile nella prima metà dello span temporale. Una differenza però si dimostra dagli anni 1960: mentre il trend della temperatura conservativa rimane lineare, quello della variabile di riferimento accellera, diventando quasi esponenziale.
La variabile relativa alla massa dei ghiacciai invece si dimostra la più diversa visivamente. Ciò è dovuto a, come accennato prima, la sua presunta correlazione negativa rispetto alle altre.
ts_zos.corr()
zos | bigthetaoga | simass | |
---|---|---|---|
zos | 1.000000 | 0.937414 | -0.495248 |
bigthetaoga | 0.937414 | 1.000000 | -0.638905 |
simass | -0.495248 | -0.638905 | 1.000000 |
La matrice di correlazione porta buoni risultati: la nostra variabile di riferimento "zos" è correlata al 93.74% con la variabile "bigthetaoha" e al -49.52% con la variabile "simass". Possiamo visualizzare le informazioni contenute nella matrice tramite una heat-map:
# Build the corplot
plt.imshow(ts_zos.corr(), cmap = 'RdBu_r', interpolation='nearest', vmin=-1)
# Add legend
plt.colorbar()
# Create list with tick_mark positions
tick_marks = [i for i in range(len(ts_zos.columns))]
# Add the tickmarks at the designated position, using the labels of the dataframe
plt.xticks(tick_marks, ts_zos.columns, rotation='vertical')
plt.yticks(tick_marks, ts_zos.columns)
plt.title("Heat-Map della matrice delle correlazioni tra i tre modelli")
plt.show()
A questo punto, valutiamo la capacità previsiva delle serie storiche da noi costruite, per fare ciò utilizziamo il test di causalità di Granger. La causalità di Granger è un concetto espresso nel 1969 da Clive Granger e ampliato successivamente da Christopher Sims mirante a determinare una causalità tra le variabili espresse in un modello. Una serie storica $\{x_t\}_t$ causa (nel senso di Granger) una seconda serie storica $\{y_t\}_t$ se, condizionando rispetto ai valori passati di $x_t$, l’errore quadratico medio di previsione della $y+t$ risulta ridotto rispetto al caso in cui l’informazione dei valori passati di $𝑥𝑡$ sia ignorata. Formalmente: $$ E[y_t − E(y_t| \cdot) | y_{t-1}, y_{t−2}, … ; x_{t-1}, x_{t-2}, … ]^2 \le E[y_t − E(y_t| \cdot) | y_{t−1}, y_{t−2}, … ]^2 $$
from statsmodels.tsa.stattools import grangercausalitytests
test = grangercausalitytests(ts_zos[['zos','bigthetaoga']], 30, verbose=False)
for i in test:
if test[i][0]['ssr_ftest'][1] < 0.05:
print('found significant p-value at lag ' + str(i) + ': ' + str(round(test[i][0]['ssr_ftest'][1] , 3)))
test = grangercausalitytests(ts_zos[['zos','simass']], 30, verbose=False)
for i in test:
if test[i][0]['ssr_ftest'][1] < 0.05:
print('found significant p-value at lag ' + str(i) + ': ' + str(round(test[i][0]['ssr_ftest'][1] , 3)))
Il test di granger, però, non trova alcun valore significativo a nessun livello di ritardo per nessuna delle due variabili. Per questo motivo, nonostante le serie siano molto correlate, non possiamo dire che né la temperatura conservativa né l'area dei ghiacciai siano utili a prevedere l'innalzamento dei mari.
Per determinare se gli scarsi risultati avuti dal Granger Test siano legati o meno al modello scelto abbiamo deciso di ripetere le analisi sostituendo il modello del "livello del mare rispetto al geoide" con la variabile "altezza del mare globale osservata".
Per fare ciò, utilizziamo il modello presente al seguente link sviluppato durante il seguente progetto: "Frederikse, T., Landerer, F., Caron, L. et al. The causes of sea-level rise since 1900. Nature 584, 393–397 (2020)" link
# Apro ed esploro il modello 4
modfile4 = 'C:/Users/david/Desktop/GeoData/Project/global_timeseries_measures.nc'
d4 = xr.open_dataset(modfile4)
d4
<xarray.Dataset> Dimensions: (time: 119) Coordinates: * time (time) datetime64[ns] ... Data variables: (12/21) global_average_sea_level_change (time) float32 -173.3... global_average_sea_level_change_upper (time) float32 -141.0... global_average_sea_level_change_lower (time) float32 -203.6... glac_mean (time) float32 -79.55... glac_upper (time) float32 -62.5 ... glac_lower (time) float32 -95.5 ... ... ... global_average_thermosteric_sea_level_change (time) float32 -48.28... global_average_thermosteric_sea_level_change_upper (time) float32 -37.55... global_average_thermosteric_sea_level_change_lower (time) float32 -58.67... sum_of_contrib_processes_mean (time) float32 -173.1... sum_of_contrib_processes_upper (time) float32 -146.8... sum_of_contrib_processes_lower (time) float32 -199.2... Attributes: (12/42) title: Global sea-level changes and contributing proc... summary: This file contains reconstructed global-mean s... id: 10.5067/GMSLT-FJPL1 naming_authority: gov.nasa.jpl source: Frederikse et al. The causes of sea-level rise... project: NASA sea-level change science team (N-SLCT) ... ... time_coverage_start: 1900-01-01 time_coverage_end: 2018-12-31 time_coverage_duration: P119Y time_coverage_resolution: P1Y date_created: 2020-07-28 date_modified: 2020-09-14
array(['1900-06-15T00:00:00.000000000', '1901-06-15T00:00:00.000000000', '1902-06-15T00:00:00.000000000', '1903-06-15T00:00:00.000000000', '1904-06-15T00:00:00.000000000', '1905-06-15T00:00:00.000000000', '1906-06-15T00:00:00.000000000', '1907-06-15T00:00:00.000000000', '1908-06-15T00:00:00.000000000', '1909-06-15T00:00:00.000000000', '1910-06-15T00:00:00.000000000', '1911-06-15T00:00:00.000000000', '1912-06-15T00:00:00.000000000', '1913-06-15T00:00:00.000000000', '1914-06-15T00:00:00.000000000', '1915-06-15T00:00:00.000000000', '1916-06-15T00:00:00.000000000', '1917-06-15T00:00:00.000000000', '1918-06-15T00:00:00.000000000', '1919-06-15T00:00:00.000000000', '1920-06-15T00:00:00.000000000', '1921-06-15T00:00:00.000000000', '1922-06-15T00:00:00.000000000', '1923-06-15T00:00:00.000000000', '1924-06-15T00:00:00.000000000', '1925-06-15T00:00:00.000000000', '1926-06-15T00:00:00.000000000', '1927-06-15T00:00:00.000000000', '1928-06-15T00:00:00.000000000', '1929-06-15T00:00:00.000000000', '1930-06-15T00:00:00.000000000', '1931-06-15T00:00:00.000000000', '1932-06-15T00:00:00.000000000', '1933-06-15T00:00:00.000000000', '1934-06-15T00:00:00.000000000', '1935-06-15T00:00:00.000000000', '1936-06-15T00:00:00.000000000', '1937-06-15T00:00:00.000000000', '1938-06-15T00:00:00.000000000', '1939-06-15T00:00:00.000000000', '1940-06-15T00:00:00.000000000', '1941-06-15T00:00:00.000000000', '1942-06-15T00:00:00.000000000', '1943-06-15T00:00:00.000000000', '1944-06-15T00:00:00.000000000', '1945-06-15T00:00:00.000000000', '1946-06-15T00:00:00.000000000', '1947-06-15T00:00:00.000000000', '1948-06-15T00:00:00.000000000', '1949-06-15T00:00:00.000000000', '1950-06-15T00:00:00.000000000', '1951-06-15T00:00:00.000000000', '1952-06-15T00:00:00.000000000', '1953-06-15T00:00:00.000000000', '1954-06-15T00:00:00.000000000', '1955-06-15T00:00:00.000000000', '1956-06-15T00:00:00.000000000', '1957-06-15T00:00:00.000000000', '1958-06-15T00:00:00.000000000', '1959-06-15T00:00:00.000000000', '1960-06-15T00:00:00.000000000', '1961-06-15T00:00:00.000000000', '1962-06-15T00:00:00.000000000', '1963-06-15T00:00:00.000000000', '1964-06-15T00:00:00.000000000', '1965-06-15T00:00:00.000000000', '1966-06-15T00:00:00.000000000', '1967-06-15T00:00:00.000000000', '1968-06-15T00:00:00.000000000', '1969-06-15T00:00:00.000000000', '1970-06-15T00:00:00.000000000', '1971-06-15T00:00:00.000000000', '1972-06-15T00:00:00.000000000', '1973-06-15T00:00:00.000000000', '1974-06-15T00:00:00.000000000', '1975-06-15T00:00:00.000000000', '1976-06-15T00:00:00.000000000', '1977-06-15T00:00:00.000000000', '1978-06-15T00:00:00.000000000', '1979-06-15T00:00:00.000000000', '1980-06-15T00:00:00.000000000', '1981-06-15T00:00:00.000000000', '1982-06-15T00:00:00.000000000', '1983-06-15T00:00:00.000000000', '1984-06-15T00:00:00.000000000', '1985-06-15T00:00:00.000000000', '1986-06-15T00:00:00.000000000', '1987-06-15T00:00:00.000000000', '1988-06-15T00:00:00.000000000', '1989-06-15T00:00:00.000000000', '1990-06-15T00:00:00.000000000', '1991-06-15T00:00:00.000000000', '1992-06-15T00:00:00.000000000', '1993-06-15T00:00:00.000000000', '1994-06-15T00:00:00.000000000', '1995-06-15T00:00:00.000000000', '1996-06-15T00:00:00.000000000', '1997-06-15T00:00:00.000000000', '1998-06-15T00:00:00.000000000', '1999-06-15T00:00:00.000000000', '2000-06-15T00:00:00.000000000', '2001-06-15T00:00:00.000000000', '2002-06-15T00:00:00.000000000', '2003-06-15T00:00:00.000000000', '2004-06-15T00:00:00.000000000', '2005-06-15T00:00:00.000000000', '2006-06-15T00:00:00.000000000', '2007-06-15T00:00:00.000000000', '2008-06-15T00:00:00.000000000', '2009-06-15T00:00:00.000000000', '2010-06-15T00:00:00.000000000', '2011-06-15T00:00:00.000000000', '2012-06-15T00:00:00.000000000', '2013-06-15T00:00:00.000000000', '2014-06-15T00:00:00.000000000', '2015-06-15T00:00:00.000000000', '2016-06-15T00:00:00.000000000', '2017-06-15T00:00:00.000000000', '2018-06-15T00:00:00.000000000'], dtype='datetime64[ns]')
array([-173.2614 , -168.8017 , -180.39 , -170.2678 , -168.7201 , -160.9814 , -175.6053 , -169.2692 , -184.1125 , -178.726 , -177.1215 , -161.7186 , -154.0655 , -146.4479 , -144.4569 , -140.9473 , -167.2579 , -157.3991 , -153.3645 , -146.9235 , -138.2963 , -138.6246 , -140.1698 , -154.9731 , -149.7155 , -154.3652 , -155.0322 , -148.16 , -150.6375 , -151.3294 , -146.431 , -146.1101 , -131.793 , -137.9301 , -151.1301 , -138.7756 , -144.5951 , -135.3655 , -125.8681 , -121.6888 , -132.3584 , -117.0145 , -116.8616 , -110.3382 , -118.8721 , -119.172 , -104.4705 , -112.5419 , -104.6075 , -92.32075 , -96.18673 , -85.61614 , -85.57809 , -79.77115 , -89.93809 , -86.62637 , -100.0402 , -83.94308 , -85.72778 , -82.73127 , -76.86832 , -77.21474 , -79.11188 , -78.69135 , -82.75202 , -76.65543 , -82.74987 , -82.96695 , -84.99568 , -84.67997 , -84.90437 , -72.7614 , -78.48801 , -83.24537 , -76.77891 , -68.12081 , -78.09583 , -73.46108 , -78.13711 , -68.2542 , -70.5558 , -53.37497 , -61.62583 , -58.23164 , -58.55206 , -64.17741 , -56.87627 , -59.44401 , -62.0668 , -54.93922 , -51.67675 , -59.24024 , -59.88175 , -58.91027 , -56.07227 , -45.17002 , -49.75505 , -36.20533 , -35.75893 , -32.66101 , -30.49195 , -28.5067 , -18.6965 , -14.9081 , -29.08901 , -22.8293 , -11.06644 , -16.89563 , -9.371227, -7.32473 , -2.866128, -7.194661, 12.19746 , 6.370174, 11.86894 , 17.86952 , 23.94186 , 32.35805 , 35.63572 ], dtype=float32)
array([-1.410028e+02, -1.358976e+02, -1.482138e+02, -1.389305e+02, -1.374501e+02, -1.303515e+02, -1.444894e+02, -1.399613e+02, -1.525979e+02, -1.464989e+02, -1.455295e+02, -1.313730e+02, -1.240754e+02, -1.170183e+02, -1.153749e+02, -1.113261e+02, -1.382314e+02, -1.281911e+02, -1.251536e+02, -1.190321e+02, -1.104519e+02, -1.119796e+02, -1.126681e+02, -1.262868e+02, -1.235410e+02, -1.277419e+02, -1.295459e+02, -1.235259e+02, -1.252716e+02, -1.276338e+02, -1.221276e+02, -1.216057e+02, -1.078001e+02, -1.138931e+02, -1.273955e+02, -1.162141e+02, -1.221016e+02, -1.135316e+02, -1.036666e+02, -9.995376e+01, -1.115368e+02, -9.612569e+01, -9.627788e+01, -9.035658e+01, -9.957440e+01, -9.930499e+01, -8.485604e+01, -9.408807e+01, -8.592069e+01, -7.411494e+01, -7.817360e+01, -6.654138e+01, -6.732684e+01, -6.166613e+01, -7.300113e+01, -6.971235e+01, -8.382143e+01, -6.684290e+01, -7.164177e+01, -6.863579e+01, -6.322494e+01, -6.367130e+01, -6.630450e+01, -6.539838e+01, -6.926268e+01, -6.367536e+01, -6.990913e+01, -7.034164e+01, -7.275970e+01, -7.235756e+01, -7.234432e+01, -6.005935e+01, -6.581922e+01, -7.075460e+01, -6.423583e+01, -5.615923e+01, -6.669364e+01, -6.182401e+01, -6.672702e+01, -5.695935e+01, -5.900002e+01, -4.218877e+01, -5.067751e+01, -4.713789e+01, -4.789229e+01, -5.386267e+01, -4.692920e+01, -4.921629e+01, -5.168835e+01, -4.554904e+01, -4.122210e+01, -4.519120e+01, -4.907295e+01, -4.872273e+01, -4.254105e+01, -2.978386e+01, -4.084937e+01, -2.525401e+01, -2.590376e+01, -1.751744e+01, -2.205799e+01, -1.914060e+01, -1.085651e+01, -7.555435e+00, -2.127952e+01, -1.519645e+01, -3.251769e+00, -9.362613e+00, -2.224959e+00, -1.388925e-01, 5.728721e+00, 1.375723e-01, 2.013864e+01, 1.494265e+01, 2.025806e+01, 2.659175e+01, 3.267299e+01, 4.267341e+01, 4.621376e+01], dtype=float32)
array([-203.5573 , -201.0185 , -212.0741 , -202.6976 , -200.167 , -192.1313 , -205.9265 , -200.8361 , -214.9371 , -208.9869 , -207.3851 , -191.8108 , -182.9198 , -176.3063 , -173.511 , -169.159 , -195.312 , -185.0264 , -180.9585 , -175.2848 , -164.7739 , -165.4743 , -167.3019 , -182.6383 , -174.977 , -180.609 , -179.1875 , -172.1679 , -175.2894 , -175.7121 , -170.006 , -170.2372 , -155.3927 , -162.1465 , -173.8665 , -162.8529 , -167.8972 , -158.2683 , -147.7587 , -142.7823 , -153.9127 , -138.0898 , -136.6612 , -130.7931 , -138.6863 , -138.5608 , -123.3204 , -131.3099 , -123.5531 , -110.6541 , -114.8069 , -103.994 , -103.7242 , -97.88902 , -107.0384 , -104.5989 , -116.3831 , -101.2467 , -100.4948 , -97.0033 , -90.80142 , -90.28999 , -91.6541 , -91.87236 , -95.92844 , -89.74098 , -95.52306 , -95.26913 , -97.08644 , -96.82774 , -97.03365 , -84.74745 , -90.35551 , -96.02547 , -89.27707 , -79.81735 , -89.15256 , -84.83942 , -88.8153 , -79.92072 , -81.5142 , -64.29264 , -72.42105 , -69.0472 , -69.40581 , -74.0112 , -66.79086 , -69.60036 , -72.69957 , -64.4972 , -61.66598 , -72.96253 , -70.50755 , -68.81976 , -68.88728 , -60.33863 , -58.47327 , -47.3814 , -45.74109 , -48.29504 , -39.16234 , -38.03562 , -26.06236 , -22.65467 , -36.81041 , -30.62476 , -18.8485 , -23.90482 , -17.19599 , -14.81402 , -11.33283 , -14.19403 , 4.005728, -2.195722, 3.502924, 9.216259, 15.51055 , 22.31229 , 24.99356 ], dtype=float32)
array([-79.5537 , -78.70381 , -77.84364 , -77.27209 , -76.43074 , -75.4351 , -74.63531 , -73.98326 , -73.19345 , -72.44661 , -71.75109 , -70.86197 , -70.11145 , -69.4271 , -68.29491 , -66.74526 , -65.74427 , -64.55025 , -63.50145 , -62.63396 , -62.11165 , -61.49796 , -60.7543 , -59.56335 , -58.62262 , -57.689 , -56.62621 , -55.49389 , -54.47128 , -53.49628 , -52.53492 , -51.21866 , -50.28735 , -49.37898 , -48.64113 , -47.76177 , -46.69285 , -45.7528 , -44.77358 , -43.99298 , -43.04232 , -42.00475 , -41.06314 , -39.97578 , -38.81485 , -37.81468 , -36.88127 , -35.84194 , -34.92814 , -34.30862 , -33.19721 , -32.41928 , -31.49255 , -30.49181 , -29.6755 , -29.21055 , -28.30467 , -27.31993 , -26.576 , -26.02886 , -25.28234 , -24.53464 , -23.70492 , -23.34496 , -23.34749 , -23.21984 , -22.8589 , -22.52689 , -22.31527 , -21.84372 , -21.5511 , -21.08332 , -21.04181 , -20.76787 , -20.35972 , -20.04416 , -19.91758 , -19.35838 , -18.75264 , -18.12921 , -17.68751 , -17.23549 , -16.85747 , -16.6097 , -16.01708 , -15.47767 , -15.12901 , -14.80937 , -14.34585 , -13.81624 , -12.95128 , -12.28005 , -12.10895 , -11.36047 , -10.6643 , -9.838601, -9.57886 , -8.885141, -7.964991, -7.3676 , -6.868742, -6.276946, -5.655815, -4.752999, -3.978419, -3.452075, -2.64425 , -1.977132, -1.448654, -0.809522, 0.104115, 0.734044, 1.000621, 1.867449, 2.607803, 3.392661, 4.098025, 4.985921, 5.272038], dtype=float32)
array([-62.5 , -61.8 , -61.2 , -60.55, -59.8 , -58.85, -58.05, -57.65, -57.05, -56.4 , -55.8 , -55.05, -54.4 , -53.75, -52.85, -51.65, -50.6 , -49.5 , -48.7 , -47.95, -47.45, -47.05, -46.35, -45.35, -44.55, -43.7 , -42.8 , -41.75, -40.8 , -39.8 , -38.95, -37.75, -37.15, -36.35, -35.75, -34.9 , -33.9 , -32.95, -32.1 , -31.4 , -30.5 , -29.55, -28.55, -27.5 , -26.45, -25.7 , -24.75, -23.8 , -22.95, -22.35, -21.35, -20.55, -19.45, -18.55, -17.75, -17.5 , -16.45, -15.85, -15.4 , -15.2 , -14.65, -14.25, -13.45, -13.55, -14.15, -14.25, -14.1 , -14.1 , -13.8 , -13.45, -13.4 , -13.05, -13.2 , -13.2 , -13.05, -13. , -13. , -12.55, -12.2 , -11.5 , -11.35, -11.15, -10.85, -10.9 , -10.6 , -10.05, -9.75, -9.7 , -9.5 , -9.15, -8.75, -8.4 , -8.2 , -7.45, -6.95, -6.5 , -6.35, -5.8 , -5.25, -4.95, -4.85, -4.55, -4.5 , -4.4 , -3.7 , -3.2 , -2.45, -1.8 , -1.3 , -0.65, 0.25, 0.85, 1.15, 2.05, 2.8 , 3.65, 4.35, 5.35, 5.75], dtype=float32)
array([-95.5 , -94.6 , -93.5 , -92.85, -91.8 , -90.7 , -89.7 , -88.9 , -87.95, -86.95, -86.25, -85.15, -84.25, -83.4 , -82.1 , -80.45, -79.15, -77.65, -76.2 , -75.2 , -74.55, -73.95, -73.15, -71.8 , -70.7 , -69.55, -68.25, -66.9 , -65.55, -64.25, -63.15, -61.65, -60.5 , -59.45, -58.55, -57.55, -56.25, -55.1 , -54.05, -53.2 , -52.1 , -50.9 , -49.75, -48.5 , -47.1 , -45.95, -44.85, -43.7 , -42.7 , -41.85, -40.75, -39.95, -38.9 , -37.7 , -36.85, -36.35, -35.35, -34.15, -33.15, -32.5 , -31.7 , -30.85, -29.95, -29.45, -29.65, -29.6 , -29. , -28.75, -28.45, -27.85, -27.4 , -26.85, -26.45, -26.2 , -25.75, -25.35, -25.15, -24.45, -23.7 , -22.7 , -22.3 , -22. , -21.5 , -21.3 , -20.55, -19.9 , -19.5 , -19.05, -18.55, -17.9 , -16.85, -16.1 , -15.7 , -14.85, -14. , -12.9 , -12.35, -11.2 , -10.2 , -9.3 , -8.65, -7.7 , -6.75, -5.1 , -4.3 , -3.75, -2.9 , -2.2 , -1.6 , -0.95, 0. , 0.6 , 0.85, 1.7 , 2.45, 3.2 , 3.85, 4.65, 4.85], dtype=float32)
array([-48.06443 , -48.17939 , -47.8617 , -47.45355 , -46.62656 , -46.41721 , -45.95629 , -45.59074 , -44.88063 , -44.30749 , -43.8577 , -43.78566 , -43.26035 , -42.92117 , -42.76309 , -42.44059 , -42.26547 , -41.57772 , -41.46857 , -41.30271 , -41.1232 , -40.96415 , -41.1604 , -40.83682 , -40.24991 , -40.05807 , -39.03788 , -38.28416 , -37.16051 , -36.13228 , -35.51887 , -33.67486 , -32.69801 , -31.60116 , -30.64511 , -29.52956 , -28.27722 , -27.62118 , -27.21039 , -26.73358 , -26.3139 , -25.69234 , -25.21231 , -24.5137 , -24.01293 , -23.97104 , -23.77624 , -23.25448 , -22.29762 , -21.18231 , -20.36542 , -19.67419 , -19.20826 , -18.74824 , -18.4568 , -18.22774 , -17.84984 , -17.12708 , -16.44646 , -16.25915 , -15.57327 , -14.89032 , -14.02888 , -13.78883 , -13.75572 , -13.32122 , -12.59099 , -12.2229 , -11.6633 , -11.25493 , -11.10174 , -10.61606 , -10.91836 , -10.96731 , -10.72626 , -10.67009 , -10.84678 , -10.84261 , -10.76609 , -10.65714 , -10.36815 , -9.840933, -9.453761, -9.68695 , -9.822171, -9.610285, -9.435392, -9.436426, -9.164365, -8.801208, -8.592012, -8.406363, -8.648116, -8.557271, -8.316084, -7.781679, -8.155566, -8.129179, -7.757576, -7.479927, -7.19333 , -6.905331, -6.262058, -5.565808, -4.885715, -4.255964, -3.492525, -2.684134, -1.895747, -1.214831, -0.100957, 1.214175, 2.404488, 3.443771, 3.849548, 4.429987, 5.181757, 5.83257 , 5.969421], dtype=float32)
array([-37.4 , -37.6 , -37.45, -36.95, -37.4 , -37.95, -37.5 , -37.25, -36.55, -37.15, -38.3 , -38.3 , -37.75, -37.4 , -37.45, -37.25, -37.1 , -36.45, -36.45, -36.35, -36.25, -36.05, -36.3 , -36.05, -35.55, -35.35, -34.4 , -33.65, -32.65, -31.75, -31.15, -29.35, -28.4 , -27.35, -26.45, -25.3 , -24. , -23.5 , -23.15, -22.75, -22.35, -21.8 , -21.45, -20.8 , -20.35, -20.35, -20.15, -19.65, -18.8 , -17.75, -16.9 , -16.35, -15.9 , -15.5 , -15.2 , -15.05, -14.75, -14.1 , -13.4 , -13.3 , -12.65, -12.1 , -11.25, -11.05, -11.05, -10.65, -9.95, -9.6 , -9.1 , -8.7 , -8.65, -8.25, -8.55, -8.7 , -8.45, -8.45, -8.65, -8.8 , -8.7 , -8.65, -8.4 , -7.9 , -7.5 , -7.75, -8. , -7.8 , -7.7 , -7.7 , -7.5 , -7.15, -7.05, -6.9 , -7.35, -7.3 , -7.1 , -6.65, -7.1 , -7.1 , -6.85, -6.65, -6.4 , -6.2 , -5.65, -5.2 , -4.6 , -4. , -3.3 , -2.5 , -1.8 , -1.15, -0.05, 1.25, 2.5 , 3.6 , 4.05, 4.7 , 5.5 , 6.2 , 6.4 ], dtype=float32)
array([-58.8 , -58.95, -58.65, -58.2 , -56.2 , -55.1 , -54.45, -54.2 , -53.45, -51.7 , -49.45, -49.3 , -48.75, -48.3 , -48.1 , -47.7 , -47.55, -46.75, -46.6 , -46.35, -46.15, -46. , -46.05, -45.75, -45. , -44.75, -43.65, -42.9 , -41.7 , -40.55, -39.95, -38.05, -37.05, -35.85, -34.85, -33.7 , -32.4 , -31.6 , -31.25, -30.75, -30.35, -29.65, -29.15, -28.4 , -27.8 , -27.75, -27.45, -27. , -25.9 , -24.75, -23.9 , -23.15, -22.6 , -22.15, -21.75, -21.45, -21.05, -20.25, -19.6 , -19.3 , -18.6 , -17.85, -17. , -16.6 , -16.55, -16.1 , -15.45, -15.05, -14.4 , -14. , -13.8 , -13.25, -13.55, -13.4 , -13.05, -13.05, -13.2 , -13.1 , -12.95, -12.75, -12.4 , -11.85, -11.4 , -11.7 , -11.75, -11.4 , -11.15, -11.1 , -10.8 , -10.4 , -10.2 , -9.95, -10.05, -9.85, -9.55, -9. , -9.35, -9.25, -8.7 , -8.35, -8. , -7.6 , -6.85, -6. , -5.25, -4.6 , -3.75, -2.9 , -2.05, -1.3 , -0.15, 1.2 , 2.35, 3.35, 3.7 , 4.2 , 4.95, 5.5 , 5.6 ], dtype=float32)
array([-9.494853, -9.440325, -9.385606, -9.33183 , -9.277636, -9.223116, -9.168591, -9.114279, -9.060195, -9.005735, -8.951541, -8.897089, -8.842772, -8.788795, -8.734428, -8.680114, -8.625927, -8.572177, -8.517279, -8.462777, -8.40924 , -8.354959, -8.300263, -8.246496, -8.191628, -8.137795, -8.082689, -8.029065, -7.975211, -7.921008, -7.866346, -7.812623, -7.757341, -7.703496, -7.648875, -7.594863, -7.540828, -7.486982, -7.431714, -7.37794 , -7.323641, -7.269779, -7.215502, -7.160399, -7.106715, -7.052174, -6.997552, -6.943965, -6.889262, -6.835301, -6.780492, -6.726675, -6.672178, -6.617932, -6.563951, -6.509375, -6.455706, -6.401492, -6.346915, -6.293032, -6.238167, -6.18503 , -6.12951 , -6.075918, -6.021938, -5.967153, -5.91324 , -5.859026, -5.803863, -5.750378, -5.696604, -5.641496, -5.586889, -5.533119, -5.478683, -5.424946, -5.369976, -5.316533, -5.262051, -5.207699, -5.153387, -5.099274, -5.044568, -4.991152, -4.936046, -4.88267 , -4.827497, -4.77335 , -4.718897, -4.66562 , -4.610252, -4.556954, -4.71453 , -4.683066, -4.34572 , -4.100896, -3.977624, -3.823491, -3.650321, -3.360491, -3.136071, -2.979572, -2.871569, -2.560501, -2.080149, -2.154084, -2.414372, -1.846381, -1.033903, -1.078408, -0.23572 , 0.087107, 0.382881, 1.079971, 1.770051, 2.701558, 2.511931, 2.652418, 3.810021], dtype=float32)
array([-3.3 , -3.3 , -3.3 , -3.3 , -3.3 , -3.3 , -3.35, -3.35, -3.35, -3.4 , -3.4 , -3.4 , -3.45, -3.45, -3.45, -3.45, -3.45, -3.45, -3.5 , -3.5 , -3.5 , -3.5 , -3.5 , -3.45, -3.45, -3.45, -3.45, -3.5 , -3.5 , -3.5 , -3.5 , -3.5 , -3.5 , -3.5 , -3.55, -3.55, -3.55, -3.5 , -3.5 , -3.5 , -3.5 , -3.55, -3.55, -3.5 , -3.5 , -3.5 , -3.5 , -3.5 , -3.5 , -3.5 , -3.5 , -3.5 , -3.5 , -3.5 , -3.5 , -3.5 , -3.45, -3.5 , -3.45, -3.45, -3.45, -3.45, -3.45, -3.45, -3.45, -3.4 , -3.4 , -3.4 , -3.35, -3.35, -3.35, -3.35, -3.3 , -3.3 , -3.25, -3.25, -3.25, -3.25, -3.2 , -3.2 , -3.15, -3.15, -3.1 , -3.1 , -3.05, -3.05, -3. , -2.95, -2.9 , -2.85, -2.8 , -2.75, -2.85, -2.6 , -2.4 , -2.3 , -2.3 , -2.25, -2.1 , -2. , -1.95, -1.9 , -1.95, -1.7 , -1.35, -1.55, -1.9 , -1.45, -0.75, -0.9 , -0.15, 0.15, 0.55, 1.3 , 2.1 , 3.15, 3.05, 3.3 , 4.55], dtype=float32)
array([-16.15, -16. , -15.9 , -15.8 , -15.65, -15.55, -15.4 , -15.3 , -15.15, -15.05, -14.95, -14.85, -14.75, -14.6 , -14.45, -14.35, -14.2 , -14.1 , -14. , -13.9 , -13.75, -13.65, -13.55, -13.4 , -13.25, -13.15, -13.05, -12.9 , -12.8 , -12.7 , -12.55, -12.45, -12.3 , -12.2 , -12.1 , -11.95, -11.85, -11.7 , -11.6 , -11.45, -11.35, -11.2 , -11.1 , -11. , -10.85, -10.75, -10.65, -10.55, -10.4 , -10.3 , -10.2 , -10.05, -9.95, -9.85, -9.7 , -9.6 , -9.5 , -9.4 , -9.3 , -9.2 , -9.05, -8.95, -8.8 , -8.7 , -8.6 , -8.5 , -8.35, -8.25, -8.15, -8.05, -7.95, -7.8 , -7.75, -7.65, -7.55, -7.4 , -7.35, -7.25, -7.15, -7.05, -7. , -6.95, -6.85, -6.75, -6.7 , -6.65, -6.6 , -6.55, -6.45, -6.35, -6.3 , -6.25, -6.45, -6.5 , -6. , -5.7 , -5.5 , -5.2 , -5. , -4.55, -4.2 , -4.05, -3.75, -3.3 , -2.7 , -2.7 , -2.85, -2.2 , -1.3 , -1.25, -0.3 , 0. , 0.2 , 0.8 , 1.4 , 2.2 , 1.9 , 1.9 , 2.95], dtype=float32)
array([12.32683 , 15.2467 , 16.57081 , 16.62429 , 16.22705 , 16.79946 , 14.79107 , 14.42116 , 15.12819 , 15.98364 , 16.35336 , 16.71663 , 16.5323 , 15.47516 , 16.90459 , 17.79461 , 15.47155 , 12.6588 , 14.92122 , 16.71301 , 16.14232 , 15.7267 , 15.32865 , 13.3177 , 14.32193 , 14.41571 , 13.62185 , 12.62899 , 14.25476 , 15.04135 , 16.19835 , 16.17618 , 16.01999 , 15.98758 , 15.31676 , 14.35338 , 16.23235 , 16.30111 , 15.64495 , 15.36817 , 15.90256 , 15.89298 , 14.8864 , 14.11513 , 15.49833 , 14.27181 , 14.42497 , 13.70423 , 13.41253 , 13.62537 , 12.31011 , 14.42373 , 14.6821 , 13.68275 , 13.80435 , 11.774 , 9.127699, 9.383834, 11.14425 , 10.54249 , 9.923853, 9.572472, 8.805349, 8.808065, 8.601792, 7.528022, 6.758744, 5.798219, 3.998297, 4.584832, 3.463519, 2.057811, 2.214306, 0.658905, -4.624437, -2.607902, -2.196488, -1.326669, -4.348937, -4.915074, -2.910202, -3.764995, -4.139982, -3.270229, -4.243092, -5.043009, -5.348708, -2.395387, -2.955027, -4.923722, -4.803403, -4.102181, -2.382769, -4.960765, -5.061406, -3.818505, -3.931961, -4.718496, -3.658077, -4.432979, -5.59041 , -3.270434, -1.413325, -0.617243, -3.308559, -1.751292, -1.530058, -2.290474, -2.057154, -1.032457, -0.527471, -3.327292, 0.736777, 0.398772, -0.759097, 3.344095, 4.953524, 2.75522 , 2.005245], dtype=float32)
array([21.8 , 24.7 , 26.1 , 26.1 , 25.7 , 26.4 , 24.35, 23.85, 24.65, 25.5 , 26.05, 26.25, 25.85, 24.75, 26.45, 27.2 , 24.8 , 22.1 , 24.35, 26.1 , 25.4 , 25.15, 24.8 , 22.55, 23.6 , 23.6 , 22.85, 21.75, 23.5 , 24.1 , 25.3 , 25.45, 25.35, 25.1 , 24.45, 23.4 , 25.35, 25.2 , 24.45, 24.25, 25. , 24.8 , 23.8 , 23.05, 24.5 , 23.1 , 23.1 , 22.55, 21.95, 22.15, 20.75, 22.9 , 23.15, 22.15, 22.25, 19.9 , 17.1 , 17.4 , 19.15, 18.3 , 17.55, 17.05, 16.2 , 16.2 , 15.75, 14.25, 13.3 , 12.1 , 10.15, 10.4 , 9.1 , 7.45, 7.35, 5.65, 0.15, 2.05, 2.25, 3.1 , -0.15, -0.95, 0.95, -0.1 , -0.55, 0.25, -0.85, -1.85, -2.25, 0.6 , 0. , -2.05, -2.1 , -1.45, 0.1 , -2.3 , -2.6 , -1.35, -1.45, -2.2 , -1.25, -2.1 , -3.3 , -0.9 , 0.85, 1.1 , -1.8 , -0.45, -0.5 , -1.45, -1.45, -0.65, -0.3 , -3.1 , 1.1 , 0.9 , -0.05, 4.25, 6. , 4.05, 3.45], dtype=float32)
array([ 2.8 , 5.75, 7.15, 7.15, 6.7 , 7.3 , 5.3 , 4.95, 5.7 , 6.55, 6.85, 7.25, 7.15, 6. , 7.35, 8.35, 5.9 , 3.25, 5.45, 7.25, 6.8 , 6.2 , 6. , 3.9 , 5.1 , 4.95, 4.2 , 3.35, 5. , 5.85, 7.15, 7.05, 6.9 , 6.9 , 6.25, 5.1 , 7.15, 7.4 , 6.65, 6.4 , 6.95, 7.05, 5.95, 5.2 , 6.65, 5.4 , 5.6 , 4.9 , 4.7 , 4.95, 3.6 , 5.75, 6.35, 5.45, 5.3 , 3.5 , 0.9 , 1.25, 3.2 , 2.75, 2.35, 2.1 , 1.5 , 1.4 , 1.55, 0.95, 0.3 , -0.55, -2. , -1.15, -2.05, -3.45, -3. , -4.4 , -9.4 , -7.45, -6.85, -5.75, -8.6 , -9.1 , -6.95, -7.6 , -7.9 , -6.9 , -7.8 , -8.35, -8.45, -5.4 , -6.05, -7.75, -7.6 , -6.85, -5.05, -7.6 , -7.55, -6.2 , -6.35, -7.25, -5.95, -6.6 , -7.7 , -5.4 , -3.45, -2.05, -4.6 , -2.8 , -2.4 , -2.95, -2.6 , -1.35, -0.75, -3.55, 0.35, -0.15, -1.6 , 2.3 , 3.65, 1.2 , 0.2 ], dtype=float32)
array([-48.27935 , -49.1449 , -49.87756 , -51.10059 , -52.24018 , -53.02522 , -54.00075 , -54.63808 , -55.22195 , -56.30412 , -57.15439 , -57.20584 , -57.1498 , -56.56736 , -55.52489 , -55.26661 , -54.91271 , -54.69735 , -54.723 , -54.93632 , -54.80711 , -55.03212 , -55.09238 , -55.52363 , -55.45387 , -54.7929 , -53.94831 , -53.43022 , -52.71059 , -52.37742 , -52.00357 , -51.67816 , -51.2972 , -50.85222 , -50.71305 , -50.05358 , -49.01334 , -47.84866 , -46.62562 , -45.20037 , -43.8755 , -43.1103 , -41.8538 , -40.20333 , -38.99926 , -38.89792 , -39.00972 , -39.52291 , -40.56562 , -41.1619 , -40.33299 , -39.36175 , -38.56855 , -38.55814 , -38.39777 , -38.42973 , -38.18145 , -37.66775 , -32.85158 , -34.88907 , -32.15378 , -30.27759 , -28.98838 , -30.32302 , -32.66518 , -33.07999 , -32.5255 , -33.74758 , -35.79723 , -35.12061 , -34.47978 , -32.36619 , -31.22978 , -30.4711 , -29.49832 , -27.00934 , -27.39489 , -26.20742 , -25.88254 , -26.23273 , -23.10203 , -23.47698 , -24.79599 , -26.22219 , -25.93333 , -24.25556 , -22.57913 , -22.75148 , -21.70013 , -22.13612 , -22.01452 , -19.32011 , -19.37729 , -19.75749 , -18.82006 , -19.78444 , -16.73626 , -16.42434 , -16.19329 , -14.12327 , -14.55739 , -11.66312 , -8.339601, -5.616477, -5.638072, -4.908377, -3.671441, -4.624906, -2.783294, -1.151002, -1.598746, -0.459241, 1.179538, 3.112605, 4.670032, 6.744699, 6.472463, 8.048318, 8.563515], dtype=float32)
array([-3.755292e+01, -3.884960e+01, -3.988883e+01, -4.081586e+01, -4.137925e+01, -4.317715e+01, -4.322139e+01, -4.481405e+01, -4.446862e+01, -4.629888e+01, -4.693890e+01, -4.694190e+01, -4.699799e+01, -4.677302e+01, -4.492617e+01, -4.483843e+01, -4.482183e+01, -4.421012e+01, -4.436013e+01, -4.482677e+01, -4.514828e+01, -4.598584e+01, -4.644711e+01, -4.702437e+01, -4.616325e+01, -4.560277e+01, -4.500859e+01, -4.439879e+01, -4.384348e+01, -4.339024e+01, -4.309971e+01, -4.339293e+01, -4.269808e+01, -4.222107e+01, -4.117225e+01, -4.193172e+01, -4.011264e+01, -3.951003e+01, -3.765003e+01, -3.631175e+01, -3.530196e+01, -3.439969e+01, -3.308968e+01, -3.150355e+01, -3.051969e+01, -3.072696e+01, -3.024407e+01, -3.091557e+01, -3.186532e+01, -3.270880e+01, -3.174330e+01, -3.058271e+01, -3.003126e+01, -2.940073e+01, -2.971812e+01, -3.017969e+01, -2.964884e+01, -3.281664e+01, -3.054105e+01, -3.099778e+01, -2.901427e+01, -2.645434e+01, -2.591538e+01, -2.675690e+01, -2.858548e+01, -3.033202e+01, -3.137087e+01, -3.123989e+01, -3.425732e+01, -3.300057e+01, -3.149405e+01, -2.993246e+01, -2.852784e+01, -2.748119e+01, -2.615972e+01, -2.407697e+01, -2.238507e+01, -2.195104e+01, -2.082077e+01, -1.943857e+01, -1.977492e+01, -2.085185e+01, -2.100388e+01, -2.103319e+01, -2.098466e+01, -2.031391e+01, -1.958608e+01, -1.912669e+01, -1.871134e+01, -1.840796e+01, -1.835412e+01, -1.722550e+01, -1.552418e+01, -1.512383e+01, -1.582722e+01, -1.597253e+01, -1.493999e+01, -1.434837e+01, -1.348248e+01, -1.285780e+01, -1.192441e+01, -9.928843e+00, -7.354952e+00, -3.478755e+00, -4.991846e+00, -4.189908e+00, -2.415411e+00, -3.470755e+00, -2.081257e+00, 6.074552e-02, -1.137802e+00, -1.976276e-03, 1.802459e+00, 3.669379e+00, 5.028707e+00, 7.239516e+00, 7.420359e+00, 8.812847e+00, 9.560000e+00], dtype=float32)
array([-58.66631 , -58.75515 , -59.15502 , -60.98501 , -62.58571 , -62.01678 , -64.65228 , -64.31616 , -65.63857 , -66.40546 , -66.61515 , -67.19209 , -66.75679 , -65.86152 , -66.03175 , -65.15433 , -64.73333 , -64.62965 , -64.74121 , -64.83634 , -64.59312 , -63.04762 , -63.42035 , -63.59563 , -63.96157 , -63.41887 , -62.45147 , -61.84157 , -61.13857 , -60.30548 , -59.93339 , -59.78192 , -59.36685 , -59.17365 , -59.41407 , -58.17271 , -57.25801 , -55.66259 , -55.33403 , -53.69909 , -51.95582 , -51.47165 , -49.90244 , -48.32549 , -46.88612 , -46.67402 , -47.43531 , -47.73483 , -48.85261 , -48.88921 , -48.57523 , -47.57947 , -46.74437 , -46.92588 , -46.83012 , -46.13955 , -46.0809 , -41.5479 , -36.07086 , -39.11736 , -35.81501 , -33.8517 , -32.65176 , -34.26135 , -34.92962 , -34.86852 , -33.47756 , -35.61958 , -38.71073 , -37.89655 , -37.08669 , -34.28116 , -32.76495 , -33.06658 , -32.25731 , -28.70847 , -30.28824 , -29.13467 , -30.53727 , -31.12568 , -25.61094 , -26.1012 , -27.61346 , -30.05125 , -31.59076 , -28.26623 , -24.32987 , -25.04239 , -24.89919 , -25.83031 , -26.08276 , -21.40783 , -22.73636 , -22.66715 , -20.69031 , -22.15413 , -17.8914 , -18.73157 , -18.69731 , -15.70124 , -16.53659 , -13.48885 , -9.539894, -6.847701, -6.501552, -5.50026 , -4.638466, -6.018044, -3.696332, -1.842621, -1.985486, -0.843125, 0.553805, 2.740455, 4.308544, 5.933526, 5.68614 , 7.528717, 7.737213], dtype=float32)
array([-173.0908 , -170.2455 , -168.4218 , -168.5576 , -168.3724 , -167.3254 , -168.996 , -168.9296 , -167.2526 , -166.1041 , -165.3859 , -164.0583 , -162.8556 , -162.2538 , -158.4369 , -155.3619 , -156.1022 , -156.7636 , -153.3141 , -150.6476 , -150.3345 , -150.1465 , -150.0041 , -150.8781 , -148.2208 , -146.2873 , -144.0978 , -142.6345 , -138.0876 , -134.9098 , -131.7499 , -128.2318 , -126.0458 , -123.5734 , -122.3565 , -120.6119 , -115.3171 , -112.4324 , -110.4212 , -107.9625 , -104.6778 , -102.2089 , -100.4829 , -97.76259 , -93.46155 , -93.49011 , -92.26482 , -91.88302 , -91.29312 , -89.8876 , -88.39133 , -83.78445 , -81.28458 , -80.75824 , -79.31489 , -80.62852 , -81.68963 , -79.15894 , -71.10312 , -72.95233 , -69.34917 , -66.34019 , -64.07328 , -64.74999 , -67.21475 , -68.08691 , -67.15629 , -68.58652 , -71.61411 , -69.41573 , -69.39801 , -67.68875 , -66.60088 , -67.12786 , -70.76192 , -65.82185 , -65.79039 , -63.1112 , -65.08457 , -65.21597 , -59.29006 , -59.49049 , -60.36604 , -60.85049 , -61.02491 , -59.3427 , -57.39531 , -54.23687 , -52.95834 , -54.41658 , -53.04702 , -48.74046 , -47.30328 , -49.39422 , -47.28247 , -45.39878 , -42.45514 , -42.05638 , -39.29918 , -36.83829 , -37.42083 , -31.17114 , -24.61106 , -19.17525 , -19.96722 , -16.59838 , -13.82782 , -13.49802 , -9.29408 , -5.360747, -2.386827, -1.677288, 5.778527, 9.97247 , 12.16477 , 20.68869 , 23.29217 , 24.349 , 25.69289 ], dtype=float32)
array([-146.7554 , -144.4624 , -142.7917 , -143.2258 , -142.7546 , -142.6106 , -143.6178 , -144.4166 , -142.9986 , -142.3136 , -142.6275 , -142.172 , -140.0537 , -139.8264 , -136.8249 , -133.5388 , -133.9845 , -135.5226 , -131.5607 , -128.9024 , -128.8621 , -129.398 , -129.7703 , -130.9279 , -128.1169 , -126.1723 , -123.9696 , -122.8104 , -119.0313 , -116.049 , -112.2763 , -109.0532 , -107.5212 , -104.8006 , -103.2331 , -102.2022 , -96.47569 , -94.49187 , -91.69044 , -90.01851 , -86.72672 , -84.09988 , -82.42024 , -79.65737 , -76.37685 , -76.67559 , -74.60751 , -74.96027 , -74.2565 , -72.94527 , -71.58691 , -66.50296 , -63.95107 , -64.09841 , -62.70353 , -63.80777 , -64.98201 , -63.74578 , -56.87432 , -57.97203 , -55.54325 , -52.31086 , -50.70527 , -51.59959 , -54.373 , -56.05072 , -55.65946 , -57.01587 , -60.3909 , -58.6801 , -58.54934 , -57.02615 , -56.32237 , -56.64848 , -60.58366 , -56.16268 , -55.11836 , -53.20351 , -54.61036 , -53.67381 , -50.46514 , -51.13157 , -51.69099 , -51.0666 , -51.37093 , -50.65174 , -49.50291 , -46.223 , -45.4491 , -46.38181 , -45.08736 , -42.11349 , -39.67417 , -41.17015 , -40.61808 , -38.26372 , -37.09686 , -36.48188 , -33.82729 , -32.43985 , -32.49448 , -27.03289 , -21.17146 , -15.57597 , -17.50895 , -14.57951 , -11.70912 , -11.67529 , -8.072283, -3.904315, -1.854432, -1.145319, 6.611324, 10.93161 , 13.24838 , 22.15863 , 25.23776 , 26.46899 , 28.1528 ], dtype=float32)
array([-199.2279 , -195.4608 , -193.3698 , -193.1899 , -193.1122 , -190.9092 , -193.7552 , -192.4955 , -191.0009 , -189.1483 , -188.1824 , -186.8564 , -185.0629 , -184.6943 , -180.5469 , -176.951 , -177.3026 , -178.3976 , -174.1986 , -171.293 , -170.9093 , -169.6153 , -169.4658 , -170.5843 , -167.8015 , -165.9058 , -163.5377 , -161.3009 , -156.8248 , -152.9051 , -150.0791 , -146.3266 , -144.1976 , -141.6161 , -139.9311 , -137.526 , -133.0068 , -129.4596 , -127.6632 , -125.5359 , -121.7051 , -119.311 , -118.0327 , -114.6669 , -109.8173 , -109.8156 , -108.9563 , -108.0885 , -107.5278 , -106.213 , -104.468 , -99.68623 , -97.77548 , -96.68294 , -95.04986 , -96.21081 , -97.48788 , -93.25143 , -84.02524 , -86.27145 , -81.76678 , -78.91973 , -76.1308 , -77.09279 , -79.03656 , -79.5088 , -77.77426 , -79.18987 , -82.29498 , -79.95874 , -80.13211 , -77.83455 , -76.46307 , -76.82608 , -80.26009 , -74.69262 , -75.56282 , -72.4054 , -75.11483 , -75.63506 , -67.87987 , -67.69627 , -68.75343 , -70.00819 , -71.11594 , -67.92054 , -64.787 , -61.86852 , -60.59767 , -62.13062 , -60.85968 , -55.27069 , -54.45446 , -56.57859 , -53.42939 , -51.62513 , -47.52125 , -47.46451 , -44.77463 , -41.17088 , -42.09021 , -35.22521 , -27.77878 , -21.97751 , -22.08577 , -18.32769 , -15.63631 , -15.51459 , -10.60268 , -6.317466, -2.846637, -2.141298, 4.91853 , 8.955513, 10.86838 , 18.9383 , 21.12208 , 21.96355 , 22.94541 ], dtype=float32)
plt.rcParams.update({'figure.figsize': (9, 5)})
d4.global_average_sea_level_change.plot()
plt.show()
Il trend della variabile non si discosta troppo da quello della variabile usata in precedenza. Ci accorgiamo però che presenta un andamento meno lineare, soprattutto nell'ultima parte in cui sembrerebbe accellerare, proprio come la variabile relativa alla temperatura conservativa del mare.
# Rimozione warning
pd.options.mode.chained_assignment = None
# Costruzione di un dataset che contenga tutte le variabili
ts_zos2 = ts_zos.drop('zos', axis=1)
ts_zos2 = ts_zos2[50:]
ts_zos2['zos'] = d4.global_average_sea_level_change.values.tolist()[:-4]
# Cambio dell'ordine delle colonne
ts_zos2 = ts_zos2[['zos', 'bigthetaoga', 'simass']]
ts_zos2.head()
zos | bigthetaoga | simass | |
---|---|---|---|
year | |||
1900-12-31 | -173.261398 | 3.975367 | 108.662781 |
1901-12-31 | -168.801697 | 3.975936 | 109.415802 |
1902-12-31 | -180.389999 | 3.975817 | 117.218178 |
1903-12-31 | -170.267807 | 3.974838 | 117.983482 |
1904-12-31 | -168.720093 | 3.974608 | 113.168900 |
# Costruzione dataset standardizzato per visualizzazione
ts_zosStd2 = pd.DataFrame(StandardScaler().fit_transform(ts_zos2), columns=ts_zos2.columns)
ts_zosStd2 = ts_zosStd2.set_index(ts_zos2.index)
plt.rcParams.update({'figure.figsize': (9, 5)})
ts_zosStd2.plot()
plt.title("Confronto tra le serie storiche standardizzate delle tre variabili")
plt.show()
ts_zos2.corr()
zos | bigthetaoga | simass | |
---|---|---|---|
zos | 1.000000 | 0.918667 | -0.777208 |
bigthetaoga | 0.918667 | 1.000000 | -0.849646 |
simass | -0.777208 | -0.849646 | 1.000000 |
# Build the corplot
plt.imshow(ts_zos2.corr(), cmap = 'RdBu_r', interpolation='nearest', vmin=-1)
# Add legend
plt.colorbar()
# Create list with tick_mark positions
tick_marks = [i for i in range(len(ts_zos2.columns))]
# Add the tickmarks at the designated position, using the labels of the dataframe
plt.xticks(tick_marks, ts_zos2.columns, rotation='vertical')
plt.yticks(tick_marks, ts_zos2.columns)
plt.title("Heat-Map della matrice delle correlazioni tra i tre modelli")
plt.show()
test = grangercausalitytests(ts_zos2[['zos','bigthetaoga']], 30, verbose=False)
for i in test:
if test[i][0]['ssr_ftest'][1] < 0.05:
print('found significant p-value at lag ' + str(i) + ': ' + str(round(test[i][0]['ssr_ftest'][1] , 3)))
found significant p-value at lag 1: 0.01 found significant p-value at lag 12: 0.048 found significant p-value at lag 14: 0.033
test = grangercausalitytests(ts_zos2[['zos','simass']], 30, verbose=False)
for i in test:
if test[i][0]['ssr_ftest'][1] < 0.05:
print('found significant p-value at lag ' + str(i) + ': ' + str(round(test[i][0]['ssr_ftest'][1] , 3)))
found significant p-value at lag 20: 0.046 found significant p-value at lag 21: 0.024 found significant p-value at lag 22: 0.025 found significant p-value at lag 23: 0.039
I risultati del Granger Causality Test ottenuti utilizzando la nuova variabile dipendente sono decisamente più interessanti.
Il test trova infatti p-value significativi a ritardi 1, 12 e 14 tra le variabili "zos" e "bigthetaoga". Ciò significa che la temperatura conservativa dei mari è utile a predirre l'innalzamento dei mari a ritardi di 1, 12 e 14 anni.
Per quanto riguarda la variabile "simass", invece, i risultati più interessanti si mostrano a ritardi più elevati. C'è infatti evidenza di una capacità della variabile relativa alla massa di ghiaccio nel mare di predirre l'innalzamento del livello dei mari a ritardi variabili tra 20 e 23 anni.